#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "student.h"   // 引入学生管理模块

// 定义用户结构体
typedef struct {
    char username[50];
    char password[50];
} User;

// 函数声明
int registerUser();
int loginUser();

int main() {
    int number;
    printf("欢迎使用学生管理系统！\n");
    printf("=== 学生信息管理系统-登录注册 ===\n");
    while (1) {
        printf("请选择操作：\n");
        printf("1. 注册\n");
        printf("2. 登录\n");
        printf("3. 退出\n");
        scanf("%d", &number);
        getchar();

        switch (number) {
            case 1:
                if (registerUser() == 1) printf("注册成功！\n");
                else printf("注册失败！\n");
                break;
            case 2:
                if (loginUser() == 1) {
                    printf("登录成功！\n");
                    menu();  // 登录成功后调用学生管理菜单
                } else {
                    printf("登录失败！\n");
                }
                break;
            case 3:
                printf("感谢使用系统，下次再见！\n");
                exit(0);
            default:
                printf("输入错误，请重新选择！\n");
        }
    }
    return 0;
}

// 注册函数
int registerUser() {
    User user, tmp;
    FILE *fp = fopen("users.txt", "a+");
    if (!fp) {
        printf("文件打开失败！\n");
        return 0;
    }

    printf("请输入用户名：");
    scanf("%s", user.username);
    printf("请输入密码：");
    scanf("%s", user.password);

    // 检查用户名是否存在
    rewind(fp);
    while (fscanf(fp, "%s %s", tmp.username, tmp.password) != EOF) {
        if (strcmp(tmp.username, user.username) == 0) {
            printf("用户名已存在！\n");
            fclose(fp);
            return 0;
        }
    }

    fprintf(fp, "%s %s\n", user.username, user.password);
    fclose(fp);
    return 1;
}

// 登录函数
int loginUser() {
    User user, tmp;
    FILE *fp = fopen("users.txt", "r");
    if (!fp) {
        printf("用户信息文件不存在，请先注册！\n");
        return 0;
    }

    printf("请输入用户名：");
    scanf("%s", user.username);
    printf("请输入密码：");
    scanf("%s", user.password);

    while (fscanf(fp, "%s %s", tmp.username, tmp.password) != EOF) {
        if (strcmp(user.username, tmp.username) == 0 && strcmp(user.password, tmp.password) == 0) {
            fclose(fp);
            return 1;
        }
    }

    fclose(fp);
    return 0;
}